﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using Microsoft.Reporting.WebForms;
using OmcfBRL;

namespace TestReport
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        protected String m_strReportFoglioIntervento = "ReportFoglioIntervento.rdlc";
        protected ReportViewerManager m_rvm;

        private void button1_Click(object sender, EventArgs e)
        {

            creaFoglioIntervento(10);

        }

        public Object creaFoglioIntervento(int cicloId)
        {
            String ReportFolder = "..\\..\\";
            String FogliInterventiFolder = "C:\\temp\\testCreateReport";

            ReportDataSource rds = null;

            //ArrayList ciclo = (ArrayList)getCiclo(cicloId);
            //Dictionary<string, object> dicCiclo = new Dictionary<string, object>();
            //dicCiclo = (Dictionary<string, object>)ciclo[0];

            //ArrayList cliente = (ArrayList)getCliente(Convert.ToInt32(dicCiclo["CIC_SOC_ID"].ToString()));
            //Dictionary<string, object> dicCliente = new Dictionary<string, object>();
            //dicCliente = (Dictionary<string, object>)cliente[0];

            ReportParameter par1, par2, par3, par4, par5, par6, par7, par8, par9, par10, par11, par12, par13, par14, par27, par28, parIF1, parM, ParNA, parI, parR1, ParK, ParN;
            ReportParameter ParDataEtichetta, ParIF2, ParAll4, ParM40, ParDataD, ParWartung, ParRevisione, Par3ME, ParTipoRevisione;
            ReportParameter ParODL, ParMatricolaCarro, ParCliente, ParSerieCarro, ParTipoCarro, ParNoleggiatario, ParResponsabileODL, ParDataInizioRiparazione, ParDataCheckIn, ParLuogoIntervento;
            ReportParameter ParRev, ParOff, ParDataRev, ParRev3MSi, ParRev3MNo;

            // TESTATA
            ParODL = new ReportParameter("ParODL", "blablabla");
            ParMatricolaCarro = new ReportParameter("ParMatricolaCarro", "blablabla");
            ParCliente = new ReportParameter("ParCliente", "blablabla");
            ParSerieCarro = new ReportParameter("ParSerieCarro", "blablabla");
            ParTipoCarro = new ReportParameter("ParTipoCarro", "blablabla");
            ParNoleggiatario = new ReportParameter("ParNoleggiatario", "blablabla");
            ParResponsabileODL = new ReportParameter("ParResponsabileODL", "blablabla");
            String dataCheckin = "10/10/2014";
            if (dataCheckin != null && dataCheckin.Length > 11)
            {
                dataCheckin = dataCheckin.Substring(0, 11);
            }
            ParDataCheckIn = new ReportParameter("ParDataCheckIn", dataCheckin);
            ParLuogoIntervento = new ReportParameter("ParLuogoIntervento", "blablabla");
            String dataInizioRiparazione = "10/10/2014";
            if (dataInizioRiparazione != null && dataInizioRiparazione.Length > 11)
            {
                dataInizioRiparazione = dataInizioRiparazione.Substring(0, 11);
            }
            ParDataInizioRiparazione = new ReportParameter("ParDataInizioRiparazione", dataInizioRiparazione);

            // REVISIONE
            ParRev = new ReportParameter("ParRev", "blablabla");
            ParOff = new ReportParameter("ParOff", "blablabla");
            string parDataRec = "10/10/2014";
            if (parDataRec != null && parDataRec.Length > 11)
            {
                parDataRec = parDataRec.Substring(0, 11);
            }
            ParDataRev = new ReportParameter("ParDataRev", parDataRec);
            ParRev3MSi = new ReportParameter("ParRev3MSi", "X");
            ParRev3MNo = new ReportParameter("ParRev3MNo", "");

            par1 = new ReportParameter("ParCodiceOrgani1", "123");
            par2 = new ReportParameter("ParCodiceOrgani2", "123");
            par3 = new ReportParameter("ParCodiceOrgani3", "123");
            par4 = new ReportParameter("ParCodiceOrgani4", "123");
            par5 = new ReportParameter("ParCodiceOrgani5", "123");
            par6 = new ReportParameter("ParCodiceOrgani6", "123");
            par7 = new ReportParameter("ParCodiceOrgani7", "123");
            par8 = new ReportParameter("ParCodiceOrgani8", "123");
            par9 = new ReportParameter("ParCodiceOrgani9", "123");
            par10 = new ReportParameter("ParCodiceOrgani10", "123");
            par11 = new ReportParameter("ParCodiceOrgani11", "123");
            par12 = new ReportParameter("ParCodiceOrgani12", "123");
            par13 = new ReportParameter("ParCodiceOrgani13", "123");
            par14 = new ReportParameter("ParCodiceOrgani14", "123");
            par27 = new ReportParameter("ParCodiceOrgani27", "123");
            par28 = new ReportParameter("ParCodiceOrgani28", "123");

            parIF1 = new ReportParameter("ParEtichettaIF1", "123");
            parM = new ReportParameter("ParM", "X");
            ParNA = new ReportParameter("ParNA", "X");
            parI = new ReportParameter("ParI", "X");
            parR1 = new ReportParameter("ParR1", "X");
            ParK = new ReportParameter("ParK", "X");
            ParN = new ReportParameter("ParN", "X");
            string parDataEtichetaValue = "10/10/2014";
            ParDataEtichetta = new ReportParameter("ParDataEtichetta", parDataEtichetaValue);
            ParAll4 = new ReportParameter("ParAll4", "X");
            ParM40 = new ReportParameter("ParM40", "X");

            ParIF2 = new ReportParameter("ParIF2", "blablabla");


            string parDataDValue = "10/10/2014";
            if (parDataDValue != null && parDataDValue.Length > 11)
            {
                parDataDValue = parDataDValue.Substring(0, 11);
            }
            ParDataD = new ReportParameter("ParDataD", parDataDValue);
            ParWartung = new ReportParameter("ParWartung", "X");
            ParRevisione = new ReportParameter("ParRevisione", "X");
            Par3ME = new ReportParameter("Par3ME", "X");

            ParTipoRevisione = new ReportParameter("ParTipoRevisione", "blablabla");


            // Cicli dettaglio
            //CicliDettaglio brlCicliDettaglio = new CicliDettaglio();

            //ArrayList CicliDettaglio = (ArrayList)brlCicliDettaglio.getViewCicliDettaglio(cicloId);
            //Dictionary<string, object> dicCicliDettaglio = new Dictionary<string, object>();

            //ReportParameter[] OM_N = new ReportParameter[CicliDettaglio.Count];
            //ReportParameter[] OM_RIP = new ReportParameter[CicliDettaglio.Count];
            //ReportParameter[] OM_SOST = new ReportParameter[CicliDettaglio.Count];
            //ReportParameter[] OM_CONTR = new ReportParameter[CicliDettaglio.Count];
            //ReportParameter[] OM_NOTE = new ReportParameter[CicliDettaglio.Count];

            //for (int count = 0; count < CicliDettaglio.Count; count++)
            //{
            //    dicCicliDettaglio = (Dictionary<string, object>)CicliDettaglio[count];

            //    String descrizioneML = dicCicliDettaglio["ML_DESCR"].ToString();
            //    descrizioneML = descrizioneML.Replace(" ", "").ToLower();

            //    if (Convert.ToInt32(dicCicliDettaglio["CD_QTA"].ToString()) > 0)
            //    {
            //        OM_N[count] = new ReportParameter("ParOM" + descrizioneML + "N", dicCicliDettaglio["CD_QTA"].ToString());
            //    }
            //    else
            //    {
            //        OM_N[count] = new ReportParameter("ParOM" + descrizioneML + "N", "0");
            //    }
            //    if (dicCicliDettaglio["CD_RIPR"].ToString() == "True")
            //    {
            //        OM_RIP[count] = new ReportParameter("ParOM" + descrizioneML + "Rip", "X");
            //    }
            //    else
            //    {
            //        OM_RIP[count] = new ReportParameter("ParOM" + descrizioneML + "Rip", "");
            //    }
            //    if (dicCicliDettaglio["CD_SOST"].ToString() == "True")
            //    {
            //        OM_SOST[count] = new ReportParameter("ParOM" + descrizioneML + "Sost", "X");
            //    }
            //    else
            //    {
            //        OM_SOST[count] = new ReportParameter("ParOM" + descrizioneML + "Sost", "");
            //    }
            //    if (dicCicliDettaglio["CD_CONT"].ToString() == "True")
            //    {
            //        OM_CONTR[count] = new ReportParameter("ParOM" + descrizioneML + "Contr", "X");
            //    }
            //    else
            //    {
            //        OM_CONTR[count] = new ReportParameter("ParOM" + descrizioneML + "Contr", "");
            //    }
            //    OM_NOTE[count] = new ReportParameter("ParOM" + descrizioneML + "Note", dicCicliDettaglio["CD_NOTE"].ToString());

            //}

            //DataSet ds = new DataSet();
            //SqlCommand cmd = new SqlCommand("SELECT TOP 5 * FROM CICLI_AVARIE WHERE CA_CIC_ID = " + cicloId, new SqlConnection(ConfigurationManager.ConnectionStrings["Omcf"].ConnectionString));
            //SqlDataAdapter adap = new SqlDataAdapter(cmd);
            //adap.Fill(ds);
            //rds = new ReportDataSource("DataSetFoglioInterventoAvarie", ds.Tables[0]);

            //// DataSetViewLavorazioniExtraNonPreventivate
            //DataSet dsAltreLavorazioni = new DataSet();
            //SqlCommand cmdAltreLavorazioni = new SqlCommand("SELECT TOP 3 * FROM ViewLavorazioniExtraNonPreventivate WHERE AL_CIC_ID = " + cicloId, new SqlConnection(ConfigurationManager.ConnectionStrings["Omcf"].ConnectionString));
            //SqlDataAdapter adapAltreLavorazioni = new SqlDataAdapter(cmdAltreLavorazioni);
            //adapAltreLavorazioni.Fill(dsAltreLavorazioni);
            //ReportDataSource rdsAltreLavorazioni = new ReportDataSource("DataSetViewLavorazioniExtraNonPreventivate", dsAltreLavorazioni.Tables[0]);

            m_rvm = new ReportViewerManager(ReportFolder + "\\" + m_strReportFoglioIntervento /*, new ReportDataSource[] { rds, rdsAltreLavorazioni}*/ );
            m_rvm.LocalReport.SetParameters(new ReportParameter[] { par1, par2, par3, par4, par5, par6, par7, par8, par9, par10, par11, par12, par13, par14, par27, par28, parIF1, parM, ParNA, parI, parR1, ParK, ParN, ParDataEtichetta, ParIF2, ParAll4, ParM40, ParDataD, ParWartung, ParRevisione, Par3ME, ParTipoRevisione });
            m_rvm.LocalReport.SetParameters(new ReportParameter[] { ParDataEtichetta, ParIF2, ParAll4, ParM40, ParDataD, ParWartung, ParRevisione, Par3ME, ParTipoRevisione });
            m_rvm.LocalReport.SetParameters(new ReportParameter[] { ParODL, ParMatricolaCarro, ParCliente, ParSerieCarro, ParTipoCarro, ParNoleggiatario, ParResponsabileODL, ParDataInizioRiparazione, ParDataCheckIn, ParLuogoIntervento });
            m_rvm.LocalReport.SetParameters(new ReportParameter[] { ParRev, ParOff, ParDataRev, ParRev3MSi, ParRev3MNo });
            //m_rvm.LocalReport.SetParameters(OM_N);
            //m_rvm.LocalReport.SetParameters(OM_RIP);
            //m_rvm.LocalReport.SetParameters(OM_SOST);
            //m_rvm.LocalReport.SetParameters(OM_CONTR);
            //m_rvm.LocalReport.SetParameters(OM_NOTE);
            m_rvm.ExportType = ReportExportType.Pdf;

            string FileName = "FoglioIntervento" + cicloId.ToString() + "_" + System.Environment.TickCount.ToString() + ".pdf";
            string Path = FogliInterventiFolder + "\\" + FileName;
            m_rvm.ExportToFile(Path);

            return FileName;
        }
    }
}
